#ifndef Parameters_H
#define Parameters_H
#include<vector>
#include<map>
#include<string>
#include"FeatureVector.h"
#include"DependencyInstance.h"
using namespace std;
using namespace boost;

class Parameters{
private:
	double SCORE;
	vector<double>* hildreth(vector<FeatureVector*> &a, vector<double> &b);
public:
	double* parameters;
	double* total;
	int size;
	string* lossType;
	Parameters(int size);
	Parameters(int size, double *param);
	void setParameters(double *param);
	~Parameters();
	void setLoss(string &it);
	void averageParams(double avVal);
	void updateParametersMIRA(DependencyInstance* inst, vector<pair<FeatureVector*, string*> > &d, double upd);
	void updateParemetersAP(DependencyInstance* inst, vector<pair<FeatureVector*, string*> > &d, double upd);
	double getScore(FeatureVector* fv);
	double numErrors(DependencyInstance* inst, string* pred, string* act);
	double numErrorsDep(string* pred, string* act);
	double numErrorsLabel(string* pred, string* act);
	double numErrorsDepNoPunc(DependencyInstance* inst, string* pred, string* act);
	double numErrorsLabelNoPunc(DependencyInstance* inst, string* pred, string* act);
};
#endif
